def solution(n, m, a, b, q, array):
    # 定义内部函数用于计算单个任务中最少需要跨越的地形数
    def find_min_crossings(x1, y1, x2, y2):
        # 判断起始点的地形，通过比较对应位置的 a 和 b 的值是否相等
        start_terrain = a[x1 - 1] == b[y1 - 1]
        # 判断终点的地形
        end_terrain = a[x2 - 1] == b[y2 - 1]
        # 如果起始点和终点的地形相同，不需要跨越地形，返回 0
        if start_terrain == end_terrain:
            return 0
        # 如果不同，需要跨越一次地形，返回 1
        else:
            return 1

    # 创建一个空列表用于存储每个任务的结果
    results = []
    # 遍历输入的任务列表
    for x1, y1, x2, y2 in array:
        # 调用内部函数计算当前任务的最少跨越地形数，并将结果添加到 results 列表中
        results.append(find_min_crossings(x1, y1, x2, y2))
    # 返回每个任务的最少跨越地形数的列表
    return results


if __name__ == "__main__":
    # 测试用例 1
    print(
        solution(3, 4, [0, 1, 1], [0, 1, 1, 0], 2, [[2, 1, 3, 3], [2, 4, 2, 1]]) == [1, 0]
    )
    # 测试用例 2
    print(
        solution(3, 4, [0, 1, 1], [0, 0, 1, 1], 2, [[1, 2, 2, 2], [2, 1, 2, 3]]) == [1, 1]
    )
